﻿using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Utils.Config
{
    public class Template
    {
        public AppConfig 程序 { get; set; }
        public DBConfig 数据库 { get; set; }
        public PLCConfig PLC { get; set; }
        public ScriptConfig 脚本 { get; set; }
#pragma warning disable IDE1006 // 命名样式
        public Template()
        {
            程序 = new AppConfig
            {
                日志文件夹 = @"D:\logs",
                历史数据文件夹 = @"D:\history_datas",
                日志压缩周期 = 7,
                连接地址 = new Dictionary<string, string>()
            };
            数据库 = new DBConfig()
            {
                sql_script = new Dictionary<string, string>()
            };
            PLC = new PLCConfig
            {
                寄存器 = new Dictionary<string, string>()
            };
            脚本 = new ScriptConfig()
            {
                引入类型 = new Dictionary<string, string>()
            };
        }
        public class AppConfig
        {
            public string 日志文件夹 { get; set; }
            public string 历史数据文件夹 { get; set; }
            public int 日志压缩周期 { get; set; }

            [JsonConverter(typeof(StringEnumConverter))]//枚举序列化时以字符串形式存储
            public PLC_type PLC_type { get; set; }
            [JsonConverter(typeof(StringEnumConverter))]//枚举序列化时以字符串形式存储
            public SQL_type SQL_type { get; set; }
            public Dictionary<string, string> 连接地址 { get; set; }
        }
        public struct DBConfig
        {
            public string 连接字符串 { get; set; }
            public Dictionary<string, string> sql_script { get; set; }
        }
        public struct PLCConfig
        {
            public Dictionary<string, string> 寄存器 { get; set; }

        }
        public struct ScriptConfig
        {
            public string 文件夹 { get; set; }
            public Dictionary<string, string> 引入类型 { get; set; }
        }
        
#pragma warning restore IDE1006 // 命名样式
    }

    public enum PLC_type
    {
        Omron,
        Mitsubishi
    }
    public enum SQL_type
    {
        SQLite,
        MySQL,
        SQLServer
    }
}
